The preferred embodiment concerns a method for communication between two memory-related processes of a computer system in which a write process writes one file into a memory region predetermined by an operating system and a read process reads the file from this memory region. In particular, the preferred embodiment concerns a method for communication between two memory-related processes of a computer system in which a write process writes a file containing print data into a memory region predetermined by an operating system and a read process reads the file from this memory region in order to transfer print data into a digital printing system. Furthermore, the preferred embodiment concerns a corresponding software product, a computer system and a printing system.
Print servers for high-capacity printers are described in Chapter 15 in the book Digital Printing, Technology and Printing Techniques of Océ Digital Printing Presses, 9th Edition, 25 Feb. 2005, ISBN 3-00-001081-5.
The workflow of a method used in an Océ PRISMAproduction Document Output Management System for communication between two processes of a computer system for transferring print data is schematically shown in FIG. 1. In this method, a folder in the computer system is monitored by means of a service program (“daemon”) as to whether a write process writes a file (File1) into the monitored folder. Three work steps for storage administration are executed in the course of the storage of the file, namely a Step a for generation of the basic file data (“File creation”), Step b in which the data are written into the memory region provided for the file (“File write”), and Step c in which the file is closed (“File close”). In the workflow shown in FIG. 1, a process tree of the operating system or memory register is furthermore monitored as to whether a new file is generated by a process. Whether the process has closed the file (File1) is then polled at regular intervals. The write process is therefore ended and the written file is complete.
A process reading the file (File1) is subsequently started in order to read the file. In the example shown in FIG. 1, the process “Data convert” reading the file is a process to convert the data contained in the file. The data from this process are written into a second file (File2). These written data are then in turn read by an additional process “read process or script” in order to store them in a third file (File3), for example to be supplied to a printing apparatus for a print output process.
In this known method, the data must always be completely written into a separate file before they can be read by an additional process.
A method similar to the method shown in FIG. 1 arises from WO 03/065197 A2, with which files of a document processing job or print job are buffered in a folder of a receiving server that is automatically checked for newly arrived files at regular time intervals. This newly arrived file is supplied for further processing. The check is controlled by means of a computer program. A new print job can be generated from every newly arrived file. A newly arrived file can also be added to an existing print job for further processing. The control mode can be selected from at least two folder-related settings and be associated with the folder.
A method for synchronization of program segments of a computer program arises from WO 01/40931 A2. This method is provided for synchronization of program segments that can run on different processors.
This method for synchronization of program segments provides a buffer in which the reading and writing is controlled by means of a standard function (for example a semaphore) and by means of one or more buffer sector flags. For this the buffer is controlled with the standard function or the buffer flag from buffer methods. This control occurs such that, during the access to the buffer by a first buffer method, a simultaneous access to the buffer for a second buffer method is prevented. The access of read program segments and generation program segments to buffer sectors is controlled with the buffer sector flag, which is set by the buffer method. Specific buffer sectors are released with the access of the buffer methods. After a release has occurred, it is possible that data are simultaneously read or, written in different buffer sectors.
This method is advantageous for program segments running on different processors since the data transfer between individual program segments is designed to be very efficient and versatile, and the data are asynchronously transferred between individual program segments.
A method for data transfer between program elements of a process arises in WO 2006/131471 A1. A buffer object that has a buffer and control methods is respectively provided between the program elements. A control method of the buffer object informs one of the associated program elements when the buffer is full or empty so that this program element begins reading the data from the buffer or writing the data into the buffer. An active buffer object is thus provided here that is provided between program elements of a process. This buffer object is in particular used to generate and debug different process parts and the subsequent connection of the process parts into a single process by means of the buffer object.
Operating systems are required for the operation of modern computers. These operating systems in turn normally contain an operating system kernel as their central component. Process and data organizations are normally established in the kernel on which additional software components of the operating system (and possibly user programs) build. Typical requirements for a system kernel are the parallel processing of various tasks (what is known as multitasking), the maintenance of time-critical limits and the transparency for other applications.
Kernels are normally constructed in layers, wherein the lower layers closer to the machine form the basis for the upper layers. The upper layers can thereby typically call functions of the lower layers, but not vice versa.
The following layers can be present in particular, from bottom to top:                interface layer to the hardware, for example input/output devices, memory, processors        layer for memory administration, in particular including virtual main memory        layer for process administration (scheduler)        layer for device administration (device management)        layer for the administration of the file systems        
If all of these functions or layers are integrated into the kernel itself, it is called a monolithic kernel. In what is known as a microkernel, parts of these occur in separate processes. What are known as the user processes also run outside of the kernel, which user processes make use of the functions offered by the kernel in order to communicate with the aforementioned components of the computer.
Also known from operating systems are what are known as kernel hooks that serve as an interface in order to enable the calling of a routine at specific points in a kernel from outside of the kernel. For example, for the Linux operating system such kernel hooks are described in two articles from the IBM Linux Technology Center, namely “Kernel Hooks” at http://www-124.ibm.com/linux/projects/kernelhooks and Richard J Moore et al., “How to use Kernel Hooks?”, (c) IBM Corp. 2000, http://www124.ibm.com/linux/projects/kernelhooks/2.6-KernelHooks-HOWTO.
The publications cited in the preceding are herewith incorporated by reference into the present Specification.